-
Notifications
You must be signed in to change notification settings - Fork 197
[Proposal] add is identical methods to concrete types #1383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@parkera Would you have any opinions about running this proposal concurrently with our proposal to add these methods to concrete types from stdlib?1 Can you think of examples in the past where one evolution proposal opened on stdlib and another proposal on Foundation covered similar designs but just focused on different concrete types? I'm thinking there might be interesting feedback in one proposal review that we might want to feed back and influence the other proposal review. Or it might be easier to start with stdlib and then consider that completed design the "prior art" for a later proposal on Foundation. Hmm… any ideas about that? Footnotes |
If we run a proposal through swift-evolution and it includes extensions to Foundation API, and the Foundation workgroup doesn't object for some reason, then we can consider it accepted. |
Maybe we just give interested parties a heads up by creating a thread in the Foundation section, in case they don't follow the other evolution threads on the forums. |
@parkera Hmm… so it sounds like maybe the idea here is:
For now… I'm still blocked waiting on an LSG review manager for the stdlib proposal. But once that is ready to schedule for a review we can discuss unifying them back together? Does that sounds about right? Thanks! |
Either way I can see if the swift-evolution is accepted, I imagine adding it to I see that the swift-evolution proposal doesn't currently include Foundation types. If you decide to continue with that version, when it's in review, you can post a pitch about these two proposals for adding it to If you want to add a section in the swift-evolution proposal to cover |
Many types in Foundation are “copy-on-write” data structures. These types present as value types, but can leverage a reference to some shared state to optimize for performance. When we copy this value we copy a reference to shared storage. If we perform a mutation on a copy we can preserve value semantics by copying the storage reference to a unique value before we write our mutation: we “copy” on “write”.
This means that many types in Foundation already have some private reference that can be checked in constant-time to determine if two values are identical. Because these types copy before writing, two values that are identical by their shared storage must be equal by value.